package com.luyuan.gallery.service.impl;

import com.luyuan.gallery.service.IExhiRedisLikeService;
import com.luyuan.gallery.util.RedisLikeUtils;
import org.springframework.stereotype.Service;

/**
 * Redis点赞记录Service业务层处理
 * 
 * @author luyuan
 * @date 2025-11-19
 */
@Service
public class ExhiRedisLikeServiceImpl implements IExhiRedisLikeService {

    /**
     * 点赞或取消点赞
     * 
     * @param bizId 业务ID
     * @param bizType 业务类型(1-展厅，2-作品，3-评论)
     * @param userId 用户ID
     * @return true-点赞成功，false-取消点赞成功
     */
    @Override
    public boolean likeOrUnlike(Long bizId, Integer bizType, Long userId) {
        return RedisLikeUtils.like(bizId, bizType, userId);
    }

    /**
     * 获取点赞数
     * 
     * @param bizId 业务ID
     * @param bizType 业务类型
     * @return 点赞数
     */
    @Override
    public long getLikeCount(Long bizId, Integer bizType) {
        return RedisLikeUtils.getLikeCount(bizId, bizType);
    }

    /**
     * 判断用户是否点赞
     * 
     * @param bizId 业务ID
     * @param bizType 业务类型
     * @param userId 用户ID
     * @return true-已点赞，false-未点赞
     */
    @Override
    public boolean isLiked(Long bizId, Integer bizType, Long userId) {
        return RedisLikeUtils.isLiked(bizId, bizType, userId);
    }

    /**
     * 获取用户点赞时间
     * 
     * @param bizId 业务ID
     * @param bizType 业务类型
     * @param userId 用户ID
     * @return 点赞时间戳，未点赞返回null
     */
    @Override
    public Double getUserLikeTime(Long bizId, Integer bizType, Long userId) {
        return RedisLikeUtils.getUserLikeTime(bizId, bizType, userId);
    }
}